其他分享
首页 > 其他分享> > 与师傅的对话一

与师傅的对话一

作者:互联网

原文链接:http://www.cnblogs.com/ktgroup/archive/2010/01/01/1637282.html

2009年末,与师傅的对话中,让我有很多关于技术方面的心得,分享给大家,希望大家会喜欢! 

有些是屁话有些很值得思考!

Rc 20:38:31

师傅

Rc 20:38:42

工作忙嘛?

L.T. 20:38:55

离死不远了。呵呵。今年年休都没休完。不过现在回家了。不忙了。

Rc 20:39:19

晕啊

Rc 20:39:26

回家了啊

Rc 20:39:34

元旦休息3天?

L.T. 20:39:59

休3天。呵呵。明天出发去宁波。

L.T. 20:40:03

元旦怎么过啊?

Rc 20:40:16

宅着过

Rc 20:40:21

哈哈

L.T. 20:40:34

宒着过好。我喜欢。不过我只能呆在别人家。。。

Rc 20:41:06

怎么说 ?

L.T. 20:41:25

去我老婆他哥家。

Rc 20:41:43

呵呵 有老婆的人啊 不一样的

L.T. 20:42:12

还是在家好。在别人家总是不舒服的。

Rc 20:42:54

老婆哥哥家 和自己家差不多的 好好享受他们的款待

L.T. 20:43:42

反正不如自己家。

Rc 20:44:11

Rc 20:44:18

最近有啥新收获?

L.T. 20:44:36

没。感觉老是没时间看书。比较烦。

L.T. 20:44:49

希望明年能过的更好。最好换份工作。呵呵。

Rc 20:44:59

我也是 好久没看书了

Rc 20:45:07

老是再弄点琐事

L.T. 20:46:25

以后找工作打死不做政府的项目了。

L.T. 20:46:35

累。一帮大爷太难伺侯了。

Rc 20:46:48

呵呵

Rc 20:46:59

你以后找个技术顾问的职位

L.T. 20:47:25

想写代码写底层的代码。

Rc 20:48:23

Rc 20:48:51

写底层的代码 有什么创意没?

L.T. 20:49:02

现在BT被封了。唉想下个电影都困难。

L.T. 20:49:13

主要是好奇一些内核的东西。

Rc 20:49:32

是的 广电总局就是恶心

Rc 20:49:56

师傅 流程框架怎么设计?

L.T. 20:49:56

太恶心了。下不到电影。我的电驴也没速度。杯具

Rc 20:50:48

对啊 视频网站早晚要被和谐掉的

L.T. 20:50:48

看模板和策略模式。提取公用部分设计扩展点。简单说仅此而已剩下就看自己的创意和相关技术的限制了。

L.T. 20:51:06

如果明白了模板和策略模式就能写了。

Rc 20:51:56

这两个模式我知道啊 但我还是觉得不能做啊

L.T. 20:52:36

关键是充分理解了吗?

L.T. 20:52:48

另外多看开源框架。

Rc 20:52:59

我觉得 我理解的还可以了

L.T. 20:53:09

自己死想是没结果的。看别人的和已经成型的产品会给自己带来新的思路。

Rc 20:53:42

恩 我想把上次说的  , 做成流程

L.T. 20:54:31

你想做类似工作流的东西?可以定制的?

Rc 20:54:48

Rc 20:55:02

但我想来想去 还没想到设计的方式

L.T. 20:55:12

那先找些开源的看看。

L.T. 20:55:22

找些灵感。

Rc 20:56:27

有推荐的嘛?

L.T. 20:56:47

工作流方面不太清楚。

L.T. 20:57:18

看原来公司的

Rc 20:57:35

晕 底层的都没有

L.T. 20:57:47

想办法解掉,呵呵

Rc 20:58:05

呵呵 这个你好像比较擅长啊

RC 20:58:23

图片

L.T. 20:58:33

我只对win32感觉兴趣 虚拟机语言不太感兴趣。

Rc 20:59:24

对啊 你上次 接的那个小项目  读取图片验证码 怎么弄的?

Rc 21:00:07

刚才那个图片看到嘛?

像这样,创建 流程 应该用什么模式?

L.T. 21:00:12

流产了。做出来后人跑了。。。

L.T. 21:00:25

图片没显示出来。

L.T. 21:00:53

程序一定要加日期限制。。。

Rc 21:01:03

就是第一步 时间维选一个 点击下一步 参与者维选一个

Rc 21:01:47

接下图片

Rc 21:02:05

流产了 呵呵

 21:02:09

成功发送文件“kkkkkkk.jpg”(39.00KB)。

Rc 21:02:13

验证码 那个怎么弄的?

Rc 21:02:23

我想知道一下

L.T. 21:02:46

你是说破解还是?

Rc 21:03:06

破解

Rc 21:03:38

今天搞了张图片上面有验证码的

想解析里边的数字 没思路

L.T. 21:03:50

就是把图片转成黑白的。去噪点。去干扰线。然后切割成指定的几个小块。每个小块对应的字母序列化成01组合存在数据库里当特征码。

L.T. 21:04:04

然后用这个来验证只能对付简单的没有多大变化的验证码。

Rc 21:04:41

没有多大变化的验证码?是什么意思?

Rc 21:04:52

是不是字体没有扭曲过的那些?

L.T. 21:05:12

就是不规则扭曲

L.T. 21:05:22

就是每次出现的字母都是随机扭曲的。

Rc 21:05:40

L.T. 21:05:52

出去接我老婆了。回来聊。

Rc 21:06:04

好的

Rc 21:06:14

回来聊下 刚发你的那个图片

L.T. 21:06:19

OK

。。。

Rc 22:40:09

回来了

L.T. 22:40:45

出去顺便吃了点饭。

Rc 22:40:55

恩 晚饭吃的好晚啊

L.T. 22:41:38

夜霄

Rc 22:41:51

Rc 22:42:01

我好久没吃夜宵了

L.T. 22:42:06

不过晚饭也没怎么吃。就吃了个饼

Rc 22:42:42

师傅 你明年准备去哪个公司

L.T. 22:43:12

还不清楚。现在比较迷惘。想转行了。转着做C++每次跳时都有这个念头。

Rc 22:43:36

做驱动开发?

Rc 22:43:47

有什么好迷茫的 想就去做就好了啊

L.T. 22:43:51

现在没那本事。

L.T. 22:43:52

通讯。

L.T. 22:44:13

最近半年一直在做通讯。写了个通讯框架对通讯现在比较有感觉。

Rc 22:45:05

视频监控?

L.T. 22:45:19

网络通讯

L.T. 22:45:31

就是通讯的Server

Rc 22:45:33

视频也可以网络通讯啊

L.T. 22:45:51

我们不是视频是用来传递业务包的。

L.T. 22:45:58

有和银行的。有和外省的。

Rc 22:46:18

恩 tcp协议

L.T. 22:46:50

tcp只是承载协议。业务协议是需要自己定的。

L.T. 22:46:59

需要自己根据业务来定包结构的。

Rc 22:47:16

要是万一通讯的时候 硬件故障

怎样确保数据正确啊?

L.T. 22:47:18

每种通讯的方式也不一样。有长连接的也有短连接的。

L.T. 22:47:31

会有重发机制的。

L.T. 22:47:39

还有数据队列的。放心丢不了。

L.T. 22:47:58

数据的来源是数据库如果库里没丢会有重发机制的。

Rc 22:48:27

恩 定时处理的嘛?

L.T. 22:49:36

有一套专门定时处理机制。数据库没什么好方法只能扫表。

L.T. 22:49:44

有专门的插件接口。

L.T. 22:49:49

只要派生就可以了。

Rc 22:50:13

恩 我们这边最近写了个邮件收发的

L.T. 22:50:35

邮件收发有现成的smtp和pop3的吧。

Rc 22:50:44

有些邮件是即时处理的

但这些数据 都是存在同一个表中

Rc 22:51:07

那要是 即时处理的数据很多 我怎样才能确保是即时?

Rc 22:51:49

我现在的做法是 10个线程处理 把每次取到的即时数据 平均分配给每个线程

L.T. 22:51:56

我们是有历史表的应答完成后的数据是移到历史表中的。

L.T. 22:52:02

不错。

L.T. 22:52:38

我的习惯是提取最大量数据避免频繁操作数据库。然后数据分片放线程池中处理。

Rc 22:53:14

恩 我的思路基本上和你一样的

Rc 22:53:33

.Net怎样让默认的进程空间 变得大一点

L.T. 22:53:45

进程空间?

L.T. 22:54:12

你指的是什么?如果你指的是进程的内存空间这个你cpu 的位数有关系的。

Rc 22:54:19

恩 我先计算 进程的空间大小  然后进程空间的60% 用来存数据库取出来的数据

L.T. 22:54:23

32位的cpu最大就是4G

L.T. 22:54:29

??

L.T. 22:54:36

进程空间60%??

Rc 22:54:37

就是一个 应用程序

Rc 22:54:44

如 一个winform程序

L.T. 22:54:50

我估计我和你说的不一个东西

Rc 22:55:13

我测试的时候 winform 默认 30M 左右

L.T. 22:55:32

这样和你说吧。一个进程如果在32位的系统上他的进程内存空间是4G。

L.T. 22:55:45

上2G是用来存系统内核映射的

L.T. 22:56:05

下2G也有一部分各有用处的。

L.T. 22:56:13

你所指的进程空间是什么?

L.T. 22:56:16

30M?

L.T. 22:56:33

我的winform程序在进行算法计算时用内存换速度达上G也是有的。

Rc 22:56:46

就是 创建一个 winform , 任务管理器 中 看到它 使用内存的大小

L.T. 22:56:56

这个是进程使用内存和进程内存空间是完全两个概念。

Rc 22:57:04

 图片

Rc 22:57:12

我不知道啊

L.T. 22:57:19

进程能使用的内存是系统所有剩余的资源。

Rc 22:57:24

我指的就是进程使用的内存

L.T. 22:57:35

只能说你程序最大能使用30M。不能说被限制在了30M

Rc 22:58:07

那到我用到30M的时候 为什么会说内存不足

L.T. 22:58:15

我10月时在写算法结算程序时为了提高运算速度用内存换空间。900W的数据20分钟算完。内存峰值达到上百M

Rc 22:58:18

明明还有很多内存没有使用

L.T. 22:58:32

有提示框 不?

L.T. 22:58:37

有截图不?

Rc 22:58:47

MemoryOut...

L.T. 22:59:04

结算中心这边的服务器都是16G内存。而且一个服务器上只跑一个程序。所以可以很爽的用内存换速度

Rc 22:59:15

L.T. 22:59:34

你那个程序在你自己家里的机器上跑也是这个提示?

L.T. 22:59:45

.net?

Rc 22:59:50

。net 程序中

L.T. 22:59:56

打个包发给我。我跑一下。

Rc 23:00:03

我在公司试的时候

L.T. 23:00:11

有具体截图不?

L.T. 23:01:03

具体哪个异常知道不?

Rc 23:01:17

 异常图片

Rc 23:01:41

class Program

    {

        static void Main(string[] args)

        {

            StringBuilder sb = new StringBuilder();

            for (long i = 0; i < long.MaxValue; i++)

            {

                sb.Append("kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");

            }

        }

    }

Rc 23:01:49

 异常图片

L.T. 23:02:25

稍等。

Rc 23:02:27

OK

L.T. 23:02:51

这个只能说是达到了stringbuilder这个对象的最大限制

L.T. 23:03:03

不能说是.net程序的最大限制。

Rc 23:03:07

这样啊

L.T. 23:03:27

你试试改成int.maxvalue 然后多用几个StringBuilder

L.T. 23:03:46

StringBuilder并不是无限大的。

Rc 23:03:53

那我用List<string>试试

Rc 23:05:39

 异常图片

Rc 23:06:12

497M的时候 也报内存不足

L.T. 23:06:29

你内存不够了当然报了。。

L.T. 23:06:58

你内存多大?设置了虚拟内存没?

Rc 23:07:00

3g

L.T. 23:07:10

现在总共消耗了多少内存。

L.T. 23:07:24

你把虚拟内存禁掉。

Rc 23:07:44

虚拟内存设置0M

Rc 23:08:03

2327M

Rc 23:08:11

现在使用 2327M

L.T. 23:08:31

寒啊。你咋用这么多。

Rc 23:08:43

我现在开了很多网页 都没关掉

L.T. 23:08:53

内存32位也最多也就能使用4G了。

Rc 23:09:23

虚拟内存 设置大点 有什么作用?

Rc 23:09:27

我现在的设置是0

L.T. 23:10:03

虚拟内存就是把磁盘空间虚拟成内存使用。用于数据交换

Rc 23:10:06

那你的意思 像32位的计算机 最多加满4g内存 再多的话也是浪费?

L.T. 23:10:21

禁掉好。你这么大内存没必要用虚拟内存。

L.T. 23:10:33

虚拟内存并不是说你真实内存耗光了才会使用。

L.T. 23:10:51

因为这汲及到一个内核里的内存页切换的问题。

L.T. 23:11:15

不用的内存页数据会暂时切换到虚拟内存上保存在磁盘上。

Rc 23:11:19

恩 直接内存中切换比虚拟内存快多少?

L.T. 23:11:42

是的。如果你内存足够没必要做这个切换

L.T. 23:11:48

毕竟内存比磁盘快多了。

Rc 23:12:33

恩 我知道了

如果我内存加到 5个g 多余的一个g 是不是就浪费掉了?

L.T. 23:12:54

如果你系统是32位的。确实是浪费了。

L.T. 23:12:59

 图片

L.T. 23:13:06

这本书我传给过你没?

L.T. 23:13:25

看一下这章就OK 了。

L.T. 23:13:25 

图片

Rc 23:13:28

传过的 不过只看了第一页

L.T. 23:14:03

 这本书还是不错。虽然有些老了。

Rc 23:14:26

恩 那有空时好好读一下

Rc 23:14:55

刚才给你传的那个(流程)图片 看过了吗?

L.T. 23:15:22

看了。

Rc 23:15:39

像这样的 用什么模式比较合适?

L.T. 23:16:40

呵呵。你现在陷在模式里了。

Rc 23:16:46

是的

L.T. 23:16:52

没有必要做任何事情都想着模式

Rc 23:17:21

但我觉得用模式 感觉写起来的代码 看上去有点水平 哈哈

Rc 23:18:21

因为我想 用户可以创建 一系列的任务 然后生成 任务的流程 图

Rc 23:18:39

如果是 任务计划 每个 任务项 都可以进行特殊设定

L.T. 23:18:47

“ 看山是山,看水是水。  

  看山不是山,看水不是水。  

  看山还是山,看水还是水,但是山更绿,水更清。”

L.T. 23:19:19

这句话是佛家的。但用在设计模式上很贴进

Rc 23:19:20

等到 任务计划 正式发布时候, 那就 取投票 比率较高的 作为任务的流程

L.T. 23:19:27

每一句话都是一种层次。

Rc 23:19:49

你快成佛了 哈哈

L.T. 23:20:32

写程序时多写注释。避免偶合。遵循基本的准则就可以了。

L.T. 23:20:56

最后你写完了。突然发现。我靠。我怎么突然用了个模式就行了。

Rc 23:21:24

呵呵 那事先没有规划好 写出来的代码 扩展性会好吗?

L.T. 23:21:34

其实写好代码还是很有必要的。不想后来接手的人一边改一边大骂这是哪个垃圾写出来的。

L.T. 23:22:01

我已经说过了不是没有规划而是。避免偶合。遵循基本的准则

L.T. 23:22:19

芒果台在播跨年晚会。哈哈。

L.T. 23:22:37

大的设计规划还是要的。

L.T. 23:22:51

但不必过份的追求模式。

Rc 23:22:56

我觉得每个人都想避免耦合 但往往真的写出来的代码 还是会存在耦合

L.T. 23:23:18

耦合是不可避免的。

Rc 23:23:26

有时我觉得 要是事先规划好 那就可以避免很多耦合

L.T. 23:24:22

事先规划也没法避免耦合的。耦合是不可能避免的只能尽量减少。没有完美的东西的。

Rc 23:25:00

站在你的角度 像这样的图片 你会用什么模式去处理?

L.T. 23:26:53

任务肯定有共同点那就有任务基类。有了这个就不可避免用工厂来分配。不过工厂和单件在工程里实在使用的太广泛了。

L.T. 23:27:30

流程图的生成只是个行为。用接口约束一下就可以了。剩下就看还有别的需求了。

L.T. 23:28:11

我就很奇怪只要有解耦的地方就需要用工厂。几乎每个工程中都会大量使用。怎么有些人就说自己从来没用过。我是彻底服了

Rc 23:28:33

呵呵

Rc 23:30:26

但我觉得 现在有个问题困扰我的

 

如 任务类型A 它或许没有 费用 这个属性

但 任务类型B它有 费用 这个属性

像这样 我要 从任务动基类 分别来 继承实现 这两类嘛?

再定义 一个 接口,来约束 任务的行为?

L.T. 23:31:16

如果不是共有的那就不要放在基类。

L.T. 23:31:28

head first第一章就提到了你这个疑惑了。

Rc 23:31:50

它第一个模式讲的就是策略模式

L.T. 23:31:59

关于接口的作用可能要举个例子你就明白了。

L.T. 23:32:11

鸭子的那个。

Rc 23:32:16

这个我看了N遍了

L.T. 23:32:24

不是大家都有的就不要放在基类中。

L.T. 23:33:02

就像asp.net上一样。不管用到用不到的公用方法都扔在自定义的page基类中一样。

Rc 23:33:02

它把所有的行为 都抽出来 做接口

L.T. 23:33:15

设计模式和面向对象并不能减少你的代码。

L.T. 23:33:30

并不一定所有的行为都抽出来做接口。

Rc 23:33:50

我想找到一个做合理的方式 来处理这个问题

L.T. 23:33:58

比如所有任务都有一个动作。但动作内容不一样。这就需要这个动作做为一个虚方法放在基类中。

L.T. 23:34:13

那什么时间适合提取出来做接口呢。

L.T. 23:34:27

这就需要另外一个需要这个行为的client来决定

L.T. 23:34:39

我给你举个例子。

Rc 23:34:39

L.T. 23:37:31

比如你有车辆的基类他有个行为是运动。你有个人的基类他也有行为是运动。但这两个基类的运动完全是不同的。一个是机械类的一个是生物类的。但有个Client要把所有东西不管是人还是物都运动起来。它会怎么做?

这时就会把运动提取出来做接口。车辆基类和人类都实现这个接口。完成运动的动作。客户端就可以只持有运动接口就行了。不管扔给他的是人类还是车辆他都能让他运动起来。

L.T. 23:38:50

我不太清楚我这个例子是不是能让你明白一些。可能例子不太恰当

Rc 23:39:00

恩 客户端只管调用行为 而不管具体是哪个类

L.T. 23:39:17

是的。他不需要知道是哪个基类过来的。

L.T. 23:39:21

他只管行为。

L.T. 23:39:35

要不要提取出来做接口主要是看不同基类中是否有相同行为。

Rc 23:39:57

恩 那创建类的时候 是不是一般都用工厂来实现?

L.T. 23:40:12

是的。为了解耦。

Rc 23:40:12

OK

L.T. 23:40:22

哈哈我觉得我们的谈话可以放在博客上。

Rc 23:40:29

是的

Rc 23:40:46

我会把我们的谈话整理到 blog上

L.T. 23:41:03

暴寒我开玩笑的。呵呵。

L.T. 23:41:13

看看明年要不要写下博客。记录一下。

L.T. 23:41:42

还有19分钟就明年了。

Rc 23:41:45

是啊 新年快乐

Rc 23:42:04

师傅 你以后要写博客 放在博客园上

L.T. 23:42:14

呵呵。还没到。先预祝一下。“新年快乐”

L.T. 23:42:35

不想去博客园。想放在个不是搞技术的地方。自己记录一下就行了。

Rc 23:42:45

为什么 不分享出去

Rc 23:43:46

我刚申请了一个新帐号

最为我们团队的官方博客

你做我们的头啊

Rc 23:44:21

http://www.cnblogs.com/ktgroup/

L.T. 23:44:29

呵呵。有些东西其实想出来是没用的。有些道理其实很简单。关键是需要自己去领悟。自己去慢慢想。想通了就好了。

Rc 23:45:03

你有什么 也放上去啊

L.T. 23:45:23

现在对这些想放一放架构、模式什么的。精力都放在底层上。

Rc 23:45:33

底层也可以放上去的

Rc 23:45:39

 图片

L.T. 23:46:18

 图片 【C++编辑器】

L.T. 23:47:00

现在在玩这个。

Rc 23:46:59

C++ 编辑器?

L.T. 23:47:21

是的。呵呵。

Rc 23:47:16

比vc好用?

L.T. 23:47:51

Symbian系统的开发环境。

Rc 23:48:11

明年 我下定决心把流程 开发完成

师傅 给予及时的指导啊

Rc 23:48:24

Symbian不清楚是什么东西

L.T. 23:48:50

诺基亚智能手机的操作系统

Rc 23:49:03

你打算做手机开发啊?

L.T. 23:49:10

明白的。

L.T. 23:49:28

没有。只是看一看。开阔下眼界。

Rc 23:49:28

L.T. 23:49:40

文档真是太少了。只有自带的英文sdk

Rc 23:49:48

刚好锻炼E文

L.T. 23:49:57

而且Symbian C++挺怪异的。

Rc 23:49:59

怎么说?

L.T. 23:50:37

呵呵。反正很多东西为了适合嵌入式环境对c++改了很多。

Rc 23:50:54

那在这个环境上 winAPI就没用了啊

L.T. 23:51:53

和winapi没有任何关系。系统都已经变了。

Rc 23:52:09

要在这个上做开发 那不是还要学 这个系统的api

L.T. 23:52:58

是的学上面的sdk

Rc 23:55:11

呵呵

Rc 23:55:41

一些网站提供一些API 你在手机上做个程序出来啊

L.T. 23:56:04

诺基亚提供的有。

L.T. 23:56:15

可以迅速的整合网站资源做出来个程序

L.T. 23:56:27

叫widget

Rc 23:56:27

听过

Rc 23:56:41

这个好像一开始 yahoo推出来的

L.T. 23:58:22

2分钟。

Rc 23:58:37

恩 2009要结束了

Rc 23:58:56

不知道 等会有没有人会放礼炮日期:2010-1-1

L.T. 0:01:11

新年快乐。呵呵。

Rc 0:01:36

you and your wife,either

Rc 0:03:31

差不多该睡觉了 早点睡啊 师母已经给你暖好被窝了哦

哈哈

Rc 0:03:42

good night!

L.T. 0:03:51

呵呵。 我一会睡。反正明天不上班。

L.T. 0:03:55

早点休息。

Rc 0:04:04

88 节日玩的愉快

转载于:https://www.cnblogs.com/ktgroup/archive/2010/01/01/1637282.html

标签:03,20,21,22,23,对话,Rc,师傅
来源: https://blog.csdn.net/weixin_30233945/article/details/96831886