Basics(基础)

本文探讨了代码整洁的原则,深入介绍了Java与.NET的区别、运算符使用、枚举类型定义、关键字应用、网络请求方法的选择、加密算法实现、装箱拆箱机制、ORM映射、控制反转(IOC)和面向切面编程(AOP)。通过具体实例,帮助读者更好地理解和应用这些核心概念。


*******************************************************************************************************************************

代码整洁之道

  1. 每个函数、类、模块,都全神贯注于一事
  2. 名称的长短应与作用域大小相对应
  3. 每个函数、类、模块都有对应的测试
  4. 写好函数,然后不断的打磨它
  5. 不要重复
  6. 尽量减少依赖
  7. 函数越小越好,越少越好
  8. 尽量达到不写注释
  9. 不只你,别人也应该一看就清晰及明确
  10. 看着合意

*******************************************************************************************************************************

java .net区别

  • .net 中小型项目效率更高一些,但是百万级后不如java
  • .net 服务器只能IIS,java(tomcat,jboss,weblogic,websphere…)
  • java是跨平台的语言,.net是跨语言的平台

*******************************************************************************************************************************

运算符:

名称属性
%取余5%2=1
^按位异或00=0;01=1;10=1;11=0
~按位求反0=1,1=0
<<左移运算符a=0000 0011(十进制3),左移4位后为0011 0000(十进制48,相当于3 * 2^4)
>>右移运算符右边的数指定移动的位数,高位补符号位
>>>无符号右移运算符高位补0
&按位与0&0=0;0&1=0;1&0=0;1&1=1
按位或

*******************************************************************************************************************************

| — | ---------------------------------- |
| ./ | 当前目录下 |
| …/ | 当前目录的上一级目录 |
| ~/ | 当前项目的根路径,只在服务器端有效 |

\ 反斜杠
\a 警告
\b 退格
\f 换页
\n 换行
\r 回车
\t 跳格
\v 垂直跳格
\ddd ddd 是 1、2 或 3 位八进制数字。这些转义序列作为由八进制数指定的具有数字值的字节显示。


*******************************************************************************************************************************

y=++x;//先执行x=x+1,再将x的值赋给y
y=x++;//先执行y=x,再执行x=x+1

try{
/* 可能会出错的东东 /
}catch(Exception e){
/
东东搞事情时 /
/
TMD 搞事情是不是!!! /
/
(try出错时执行) /
}finally{
/
不管东东搞不搞事情我都要hit Ta /
/
不管有木有出现异常,不管try和catch中是否有return,都会执行(return后执行) /
/
finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值 */
}

using (TextWriter w = File.CreateText(“test.txt”))
{ w.WriteLine(“Line one”); w.WriteLine(“Line two”); w.WriteLine(“Line three”); }

if(){}
where(){}
do{}where()
(bool?true:false)
foreach (string s in args) { Console.WriteLine(s); }

break; continue;


*******************************************************************************************************************************

常识

**.NET Framework 框架/类库** 能够完成一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务)
using 引用 称为“关键字”,通过它来声明对命名空间的引用
namespace 命名空间 ,命名空间是从功能角度对类型的划分,是一组类型在逻辑上的集合。其作用是为了防止命名冲突。.NET就是利用命名空间来对程序进行分类,把功能相似的类、结构等程序放在同一个命名空间里,最常见也最常用的命名空间是System命名空间,它包含了很多常用的结构类型,例如Console。

*******************************************************************************************************************************

enum 枚举类型

enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri }; 
enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
int x = (int)Days.Sun;(强制类型转换)

KeyWord 关键字

const 只读 把变量变为常量
static 静态 全局唯一
fixed 终态 最终形态(最终值)
private 私有 类的私有
protected 受保护的 都说了受保护,我的人可以访问
public 公有 什么东西都可以访问的


*******************************************************************************************************************************

网络

在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式
get安全性非常低,post安全性较高。但是执行效率却比Post方法好

GET

  • 大小 传输的数据不能大于2KB
  • 安全 非常低
  • 执行效率

POST

  • 大小 传输的数据 一般被默认为不受限制,理论上,IIS4中最大量为80KB,IIS5中为 100KB
  • 安全 较高
  • 执行效率 一般

*******************************************************************************************************************************

加密

0.不可逆的加密

只可以对比,,只能用 例子法 破解

  1. MD5加密 + 字符串切换,大小写切换 (.Replace(“A”, “C”).ToLower())

解:

0.对付不可逆加密

比如 加密123 得 awrfaf435et4564 则知道 awrfaf435et4564 的一种解为 123

Encryption_1

例:12345679ABCDEFG…
(值类型 0~9 & A~Z)

第一步:换序(按固定的(或者根据key),可逆的规律 - 重新排序)

如:12345679ABCDEFG…
得:13579BDF…2468AC…

第二步:加值

如:13579BDF…2468AC…
++++++++…------…
13524613524613524… (135246无限循环key)
得:26A9DHEI…W33389…
(超出或者小于重新排:如2-6=W, Y+1=0)

第三步:转进制


*******************************************************************************************************************************

装箱 & 拆箱

Thread stack :: 堆栈
Managed Heap :: 托管堆

装箱是将值类型转换成引用类型,或者是实现了接口的值类型。装箱将数据存储的空间由Thread stack转存到了Managed Heap中。凡是在Managed Heap中开辟空间,都将触发GC(垃圾回收),在Thread statck将不会触发垃圾回收。

拆箱就是将数据从Managed Heap中提取出来,并拷贝到Thread stack中。所以拆箱会形成两份数据,一分在Managed Heap中,一份在Thread Statck中。

先来看一段装箱和拆箱的代码

    public static void BoxUnbox()
    {
        int i = 123;
        object o = i;//隐式装箱
        object p=(object)i;//显式装箱
        int j = (int)p;//拆箱
    }

*******************************************************************************************************************************

ORM 对象关系映射

把数据库语句变成一个对象,写入对象参数 例如搜索条件,显示字段,排序等等参数,执行“数据库语句”对象

IOC 控制反转

 xml 中定义对象 代码直接获取对象,有什么用? 自动控制对象的创建&销毁

AOP 面向切面(Aspect Oriented Programming)

通常称为面向切面编程。它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。       http://www.cnblogs.com/ysocean/p/7476379.html

*******************************************************************************************************************************
激光SLAM(Simultaneous Localization and Mapping)是一种用于机器人导航和建图的方法。它通过使用激光传感器扫描周围环境,实时定位机器人,并同时创建环境的地图。 激光SLAM的基本原理是利用激光扫描仪的观测数据,计算机可以根据扫描的物体在地图上的位置和形状,以自己的坐标系为基准,将其实时定位在地图上。这需要机器人具备感知和定位的能力,能够根据激光扫描数据进行位置估计和姿态估计。机器人同时也会使用这些数据来构建环境的地图,从而实现SLAM。 激光SLAM的实现过程通常包括以下几个步骤:首先,机器人需要初始化,确定初始位置和地图为空。然后,机器人开始移动,激光扫描仪扫描周围环境。机器人根据扫描数据和之前的位置估计,计算出当前位置和姿态。接下来,机器人根据当前位置和地图数据进行匹配,更新地图和机器人的状态。这个过程在机器人探索环境的过程中不断重复,直到完成地图的构建和机器人的定位。 激光SLAM的应用非常广泛,特别是在无人驾驶车辆、自主机器人等领域。它提供了一种可靠和精确的实时定位和建图的方法,使机器人能够在未知环境中进行导航和定位,并根据环境的变化进行自主决策。 总而言之,激光SLAM利用激光扫描仪的观测数据,在实时定位机器人的同时创建环境地图。它的基本原理包括机器人的感知和定位、地图的构建和更新等步骤。激光SLAM在无人驾驶车辆和自主机器人等领域具有重要的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值