- 博客(70)
- 资源 (3)
- 收藏
- 关注
原创 关于学习开发新内容的一些思考
学习新内容的困难点:学习内容中涉及知识点不了解,或者不熟悉。 自己想快速学完整个学习内容,急于求成。 再学习过程中,把握不住关键点,喜欢死钻牛角尖。 软件环境,自测试环境搞不定,验证不了问题,或复现不了问题。 不懂得提问,提问不太精准,别人回答的和自己想要的不一样。还有一些其他原因,都导致了在学习新内容中,具有很大障碍。如何破解?提升自己的表达能力,积极提问,积极去沟通,...
2019-11-08 19:16:51
341
原创 关于组播地址的心得
组播地址:分类224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;239.0.0.0~239.255.255.255为...
2019-11-08 18:55:23
1544
原创 linux 操作系统安全加固
操作系统安全加固顾名思义:将操作系统的安全环境,提升至尽可能安全的状态。系统通用的安全加固可以从下面几个方面进行考虑:通用软件的加固,如openssh,实现方式就是将修改其配置文件,让openssh 运行时,不暴露相应的版本信息。如禁止root登录,同时,及时更新相应的软件包,填补相应的软件包漏洞等等。 tcpwrapper, 基于主机的访问控制,也是可以对用户进行服务的限制。 ...
2019-10-29 16:35:37
1134
原创 dd和cp命令差异
1.场景:想要将一个格式的文件拷贝到U盘上思路:插上U盘 ,fdisk -l 查看多出的磁盘符号,然后挂载将这个盘符,挂载到一个目录上,使用cp命令,拷贝;之后发现不太对。经过查资料:对于一些较大的具有特殊文件,建议使用dd if=/home/see/A.ios of=/mnt/A.ios2.场景:linux下通过ISO文件安装相关软件包思路:挂载ISO文件,到一个目
2016-11-23 21:29:38
2853
原创 职业方向的一次转变
职业方向的一次转变自毕业后开发javaee应用,对相关的知识体系熟悉了,但是内心中还有一个情节,那就是Linux下的开发,不论哪方面,他的那种简约,自由的感觉,貌似在我内心中留下了一丝痕迹,怎样都抹不去,最后还是想在Linux方向中,深入下去,想好好沉下心,研究些之前不明白的东西,所以,这次转到一家Linux开发的公司供职,我想对自己说,兴趣能让疲劳的心,重新振作起来。
2016-11-21 23:19:36
633
原创 排序算法总结
1.冒泡排序:思路:一个数组中,从a[0]到a[n] 遍历的过程中,将此轮最大(最小)的数放在a[n]位置,下一轮从之前元素的下一个在进行一次遍历,将最大(最小)的数放在a[n]处.代码:void Bubble(in a[],int length){for(int i=0;i{for(int j=1;j{if(a[j-1]>a[j]){swap(a[
2016-05-31 23:46:11
453
原创 SIP协议学习
前言 SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。广泛应用于CS(Circuit Switched,电路交换)、NGN(Next Generation
2016-05-21 23:10:31
516
原创 STL之常用算法
知识铺垫 函数对象-仿函数:1.函数对象(仿函数)是一个类,不是一个函数。2.函数对象(仿函数)重载了”()”操作符使得它可以像函数一样调用函数对象的特点:1.函数对象也可以有参数和返回值2.函数对象超出函数概念,可以保存函数调用状态3.函数对象做参数和返回值例子:#include<iostream>#include<algorithm>#include<vector>#include<fun
2016-05-03 16:42:14
745
原创 五一游,清华,北大
2016年,五一节第一天,决定一日游清华北大。清华到了清华,有一些该校的志愿学生去帮助介绍清华的一些景点。清华西门进如大学时,要排队刷身份证,今天的人还是比较多的。大礼堂 绿草比较多,面积比较大。上面有个日冕石台。清华学堂 悟 是一个铜铸像,他的意义就是要,将书中的知识,读活,从书中走出来; 还有一种说法是,两耳不问窗外事,一心只读圣贤书,也就是解释了铜像没有耳朵。 之后,找到了北大东门,
2016-05-01 22:26:01
862
原创 STL学习总结之容器
STL介绍STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的
2016-05-01 20:44:47
3779
原创 C++虚析构函数
如果基类中存在一个指向动态分配内存的成员变量,并且基类的析构函数中定义了释放该动态分配内存的代码,那么就应该将基类的析构函数声明为虚函数,这样可以将子类对象中的开辟的动态空间回收。#include <iostream>using namespace std;//基类class Base{private: int *a;public: Base(); virtual
2016-04-18 16:02:38
429
原创 读书笔记--C语言接口与实现--异常和断言
概念原文Three kinds of errors occur in programs: user errors, runtime errors, and exceptions。在程序中有三种错误,用户错误,运行时错误,异常。User errors are expected because they’re likely to occur as the result of
2016-04-13 23:26:08
887
原创 非局部跳转语句---setjmp和longjmp函数
1. C语言异常检测实现基础知识setJmp() , longjmp()非局部跳转语句—setjmp和longjmp函数非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。#include /* setjmp example: error handling */#include <stdio.h> #in
2016-04-12 21:33:50
753
原创 详解指针与数组
前言有时我们在编程序的时候,在某种情况下,操作指针和数组时,会让人感到它们是一样的,即使,它们可以互换使用。下面咱们一块来来总结一下指针与数组的相同点和不同点。int main(){ int a[]={1,2,3,4,5,6}; int *p =a; //通过数组名打印数组变量 int i=0; for(i=0;i<sizeof(a)/sizeof(a[0]);i++) {
2016-04-10 22:46:09
662
原创 读书笔记--C语言接口与实现--atom(原子)
概念理解An atom is a pointer to a unique,immutable sequence of zero or more arbitrary bytes. Most atoms are pointers to null-terminated strings, but a pointer to any sequence of bytes can be an atom. There
2016-04-09 22:24:57
2648
原创 读书笔记--C语言接口与实现--接口与实现
接口实现重点内容在本书中的第二章中,介绍了接口的封装例子。1. 接口定义C语言中可将接口封装好,让后以.h文件作文扩展,简单例子:extern int Arith_max(int x, int y);extern int Arith_min(int x, int y);extern int Arith_div(int x, int y);extern int Arith_mod(int x,
2016-04-06 14:51:07
8525
1
原创 读书笔记--C接口定义与实现--回忆脑海中的知识储备
回想最初学习C语言时,脑袋中差不多有以下知识点1. 变量的种类,定义方法,定义注意事项,作用域,生命周期。2. 流程控制,顺序,循环,判断3. 指针与数组的定义和使用方法,字符数组,字符串的处理4. 内存管理–内存四区的了解,栈,堆,常量区,代码区。5. 文件操作,文本文件和二进制打开,读,写等操作函数。6. 函数定义与实现,各种类型变量充当函数形参。为了更好地运用C语言,有必要去学习一下《C接口与
2016-04-04 18:01:26
840
原创 标准C语言关键知识回顾
指针的长度1. 如果系统是32位则,指针变量为4个字节;如果系统是64位系统,指针变量为8个字节。2. 指针常量和常量指针的区别:2.1 指针常量 int const * p; 指向的地址可变,其指向地址的内容不可变。const int *p等价 ``` 例子: int a = 10; int b = 11; int const *p = &a;
2016-04-04 17:03:21
451
原创 指针数组、数组指针、二维数组动态分配内存
C 二维数组动态分配和释放已知第二维 char (*a)[N];//指向数组的指针 a = (char ()[N])malloc(sizeof(char ) * m); printf(“%d\n”, sizeof(a));//4,指针 printf(“%d\n”, sizeof(a[0]));//N,一维数组 free(a); 已知第一维 char* a[M];//指针的数组 in
2016-03-22 22:59:02
9720
2
原创 协议学习----协议的种类和使用方位
当程序员需要编码,但是想要提高自己的不可替代性,就得学习相关领域的协议,这样就增加了自己的深度。我们这里主要说一下应用层的协议。应用层协议:DHCP ·DNS · FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · S
2016-03-08 21:23:46
690
原创 C 逆置字符数组(中文)
问题:假设有char a[]=”编程语言思想”;求其逆置的数组,并输出。解决思路:一个汉字占两个字节,对于该字符数组中,一个汉字相当于占了两个英文字母的字节数。所以代码如下:int main(){ char a[] = "编程中国人"; int index=0; int max; int min; char tmp[2]; while(a[index
2016-03-02 16:14:57
1878
原创 2015心路记录(1f)
发现自身学习方法的缺点自己存在一种现象,自己努力学习编程,但是感觉并不是那么有效果,反倒让自己感到那么劳累。此时,必须要注意到自己的学习方式,因为现象其实已经告诉自己了,自己的学习过程有问题。这里,我要说的就是,一定要总结,不断纠错,就算自己刚开始选择的学习方法有问题,总能在不断的总结中,走上比较不错的道路。其实,这个想法也可以用到自己的职业生涯中,不断发现,总结,才能知道自己想要什么!一
2015-01-08 22:51:12
815
原创 JavaSocket聊天器<三>多线程客户端向服务端发送信息
题接上文:在现在,我们实现了客户端向服务端的信息发送,此时的发送,仅仅是单个的客户端,能否让多个客户端给服务端发信息,答案是可以的,必须要运用多线程的知识。客户端代码:/** * 实现多线程的聊天-----功能多个客户端发送信息,在服务器端会显示出来 * @author Character_Painter * */public class Client { private
2015-01-06 21:30:41
2910
4
原创 JavaSocket聊天器<二>客户端与服务端发送信息
客户端与服务端的信息传送题接上篇,这篇博文记录的是:在客户端写信息输送给服务端。关键性的点:理解Socket的作用,在服务端和客户端之间的桥梁作用,在通过输入输出流的相关操作,通过Socket得到相关信息。废话不多说:贴代码:服务端:public class Server { private ServerSocket server=null; private Socket
2015-01-04 23:30:06
875
原创 JavaSocket聊天器<一>实现客户端与服务端连接
import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/**
2015-01-04 21:30:59
1096
原创 探索InputStream 和 OutputStream 家族成员的心得<二>
字符流的相关介绍---文件数据IO操作PrintWriter、BufferedReader/** * 使用PrintWriter * 它是具有自动行刷新的缓冲字符输出流 * * 使用BufferedReader * 它是缓冲字符输入流,其内部提供了缓冲区,可以提高读取效率。 * * @author Character_Painter * */public class
2015-01-03 14:54:51
556
原创 探索InputStream 和 OutputStream 家族成员的心得<一>
探索InputStream 和 OutputStream 家族成员的心得java程序中的流操作主要解决的是,程序与外界的数据交互问题,也就是说这个知识也是必须要掌握的。问题:什么是输入?什么是输出?这个也是一个重要知识,因为在懂得这个概念才能明白数据的传输方向,才能很肯定地使用相关的类进行操作。输入:从外界环境,将数据传送给运行程序的内存,在内存看来,是读
2015-01-02 15:29:27
643
原创 Java中(向上,向下)造型造型和接口回调中的问题
最近回顾了一下java继承中的问题,下面贴代码:package com.cc;/** * 目的:问题验证,关于向上和向下造型过程中,检测存在继承关系的对象访问关系。 * * * @author Character_Painter * */public class Base { protected String temp = "base"; public void f
2015-01-01 17:03:42
3764
原创 java实现验证码步骤
思考原因:验证码仿佛在网页注册中出现的频率很高,但为什么会要使用验证码,又怎样实现的?这一系列的问题引起了我的好奇。于是,我查相关资料。相关资料:验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算
2014-12-29 21:32:10
861
原创 程序生涯思考
写作目的:1.提升今后自己的博客文章质量,不能老是转载,缺少自己的原创文章,缺少自己的思考,对今后的发展是不利的,是体现不了自己的价值。2.写博客应该必须要养成固定的习惯,间隔要比较短。3.激励自己学习新知识动力。自我评价:首先自己对自己的认识还是比较清楚的,属于入门级别的程序员。之前,自己也是写过一些博客,也想过要让自己通过努力,进入到程序的世界,我想象的程序世界,是一副
2014-12-28 00:34:16
636
转载 C++设计模式----观察者模式
由遇到的问题引出观察者模式观察者模式应该可以说是应用最多、影响最广的模式之一,因为 观察者的一个实例 Model/View/Control(MVC)结构在系统开发架构设计中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。个人也认为 观察者模式是软件开发过程中必须要掌握和使用的模式之一。在 MFC 中,Doc/View(文档视图结构)提供了实现 MVC 的框架结构(有一个从设计模
2014-08-29 16:05:44
569
转载 C++设计模式----建造者模式
由遇到的问题引出建造者模式生活中有着很多的建造者的例子,个人觉得大学生活就是一个建造者模式的最好体验:要完成大学教育,一般将大学教育过程分成 4 个学期进行,因此没有学习可以看作是构建完整大学教育的一个部分构建过程,每个人经过这 4 年的(4 个阶段)构建过程得到的最后的结果不一样,因为可能在四个阶段的构建中引入了很多的参数(每个人的机会和际遇不完全相同)。建造者模式要解决的也正是
2014-08-29 16:03:55
426
转载 C++设计模式----外观模式
由遇到的问题引出外观模式举一个生活中的小例子,大凡开过学或者毕过业的都会体会到这样一种郁闷:你要去 n个地方办理 n 个手续(现在大学合并后就更加麻烦,因为可能那 n 个地方都隔的比较远)。但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的、到什么地方去办理我们都不感兴趣。实际上在软件系统开发中也经常回会遇到这样的情况,可能你实现了一些接口(模块),而
2014-08-28 22:44:23
488
转载 C++设计模式----模板方法模式
由遇到的问题引出模板方法模式在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。模板方法提供了这种情况的一个实现框架。模板方法模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。【注释 1】【注释 1】:Stra
2014-08-28 22:35:21
495
转载 C++设计模式----原型模式
由遇到的问题引出原型模式关于这个模式,突然想到了小时候看的《西游记》,齐天大圣孙悟空再发飙的时候可以通过自己头上的 3 根毛立马复制出来成千上万的孙悟空,对付小妖怪很管用(数量最重要)。原型模式也正是提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。在 C++中拷贝构造函数(Copy Constructor)曾经是很对程序员的噩梦,浅层拷贝和深层拷贝的魔魇也是很多程序员
2014-08-28 22:33:19
601
转载 C++设计模式----代理模式
由遇到的问题引出代理模式至少在以下集中情况下可以用代理模式解决问题:创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy);为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出),我们将这个操纵的过程交给一个代理去完成,GoF 称之为远程代理(Remote Pr
2014-08-28 22:31:15
550
转载 C++设计模式----装饰模式
由遇到的问题引出的装饰模式在 OO 设计和开发过程,可能会经常遇到以下的情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,这样会带来一个问题(将在本模式的讨论中给出)。通过继承的方式解决这样的情况还带来了系统的复杂性,因为继承的深度会变得很深。而装饰提供了一种给类增加职责的方法,不是通过继承实现的,而是通过组合。有关这些内容
2014-08-28 22:28:37
431
转载 C++设计模式----策略模式
由遇到的问题引出策略模式策略模式和 Template 模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算法)具体实现和抽象接口之间的解耦。策略模式将逻辑(算法)封装到一个类(Context)里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。State 模式也有类似的功能,他们之间的区别将在讨论中给出。模式选择策略模式
2014-08-27 10:57:46
525
转载 C++设计模式----工厂模式
由遇到的问题引出工厂模式在面向对象系统设计中经常可以遇到以下的两类问题:◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题 n 多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如 new ×××
2014-08-27 10:33:33
399
转载 算法复杂度总结表
搜索算法数据结构时间复杂度空间复杂度 平均最差最差深度优先搜索 (DFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)广度优先搜索 (BFS)Graph of |V| vertices and |E| edges-O(
2014-08-25 20:10:32
765
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人