与师傅的对话一
作者:互联网
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