java中序列化得到的二进制流文件 反序列化失败

在eclipse中clean 编译在classes大小不一致 没办法反序列化了

1个回答

本来 是600k,编译之后居然变成了 900k了 编译对二进制流文件有什么影响吗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
有关Java序列化问题两点疑问

serialVersionUID改变,需要重新序列化? serialVersionUID是private static final ,如何重新分配值? 谢谢

结构体序列化和反序列化,麻烦各位大佬帮忙啊

请实现一下结构体报文的序列化和反序列化函数 序列化:将结构体的数据放在一段尽可能小的内存中, 反序列化:根据序列化的情况,将内存中的数据解析到结构体中 struct A { bool b1; std::string str; bool b2; char[2] chars; };

C#中序列化的dataSet对象,在java中如何解析

C#中的dataSet序列化后,在java中如何反序列化?在线告急,求大神指教

web项目中实体类序列化的原因?

在网上找了一下序列化的概念 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这就需要Java序列化与反序列化了。换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中恢复出Java对象。 当我们明晰了为什么需要Java序列化和反序列化后,我们很自然地会想Java序列化的好处。其好处一是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里),二是,利用序列化实现远程通信,即在网络上传送对象的字节序列。 http://blog.csdn.net/wangloveall/article/details/7992448 最近看一个项目的时候,用的是spring +mybatis整合的框架,里面的实体类实现了Serializable接口,那么我想确认一下: 这里序列化的原因是为了将对象存到数据库吗? 如果在sql中没有存储与取出对象的操作,那么不序列化也是可以的??

C#求WINCE实现对象二进制格式化BinaryFormatter方法

C# 求WINCE实现对象序列化BinaryFormatter的方法,有没办法在CE下把类写成一个文件? 下面代码中在WIN7下通过 但是转到智能平台开发 CE的下面 就没有BinaryFormatter的方法 Student objStu = new Student() { Name = this.txtName.Text.Trim(), Age = Convert.ToInt16(this.txtAge.Text.Trim()), Gender = this.txtGender.Text.Trim(), Birthday = Convert.ToDateTime(this.txtBirthday.Text.Trim()) }; //【1】创建文件流 FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Create); //【2】创建二进制格式化器 BinaryFormatter formatter = new BinaryFormatter(); //【3】调用序列化方法 formatter.Serialize(fs, objStu); //【4】关闭文件流 fs.Close();

protobuf 序列化 c++

大家好,请问大家一个protobuf序列化的问题,我用的pb版本是2.5.0,问题是: 生成的头文件里面只有一个SerializeWithCachedSizes方法,我想把这个类序列化成字节数组,通过网络发送出去,网上pb教程中不少提到了SerializeToArray方法,很符合我的要求,为什么我的头文件中没有这个方法呢?首次使用pb,还不是很熟悉,如果可以解决,请您尽量附上完整代码,小弟在此谢过了!!! [color=blue][size=large]proto文件如下[/size][/color]: [code="java"] package ddz.proto; option optimize_for = LITE_RUNTIME; option java_package = "ddz.proto"; option java_outer_classname = "Login"; message LoginMessage { optional string userAccount = 1; } [/code] [color=blue][size=large]生成命令[/size][/color] [code="java"] protoc -I=./ --cpp_out=./ ./hello.proto [/code] [color=blue][size=large]生成的头文件如下:[/size][/color] [code="java"] // Generated by the protocol buffer compiler. DO NOT EDIT! // source: hello.proto #ifndef PROTOBUF_hello_2eproto__INCLUDED #define PROTOBUF_hello_2eproto__INCLUDED #include <string> #include <google/protobuf/stubs/common.h> #if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif #if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include <google/protobuf/generated_message_util.h> #include <google/protobuf/message_lite.h> #include <google/protobuf/repeated_field.h> #include <google/protobuf/extension_set.h> // @@protoc_insertion_point(includes) namespace ddz { namespace proto { // Internal implementation detail -- do not call these. void protobuf_AddDesc_hello_2eproto(); void protobuf_AssignDesc_hello_2eproto(); void protobuf_ShutdownFile_hello_2eproto(); class LoginMessage; // =================================================================== class LoginMessage : public ::google::protobuf::MessageLite { public: LoginMessage(); virtual ~LoginMessage(); LoginMessage(const LoginMessage& from); inline LoginMessage& operator=(const LoginMessage& from) { CopyFrom(from); return *this; } static const LoginMessage& default_instance(); #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER // Returns the internal default instance pointer. This function can // return NULL thus should not be used by the user. This is intended // for Protobuf internal code. Please use default_instance() declared // above instead. static inline const LoginMessage* internal_default_instance() { return default_instance_; } #endif void Swap(LoginMessage* other); // implements Message ---------------------------------------------- LoginMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const LoginMessage& from); void MergeFrom(const LoginMessage& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // optional string userAccount = 1; inline bool has_useraccount() const; inline void clear_useraccount(); static const int kUserAccountFieldNumber = 1; inline const ::std::string& useraccount() const; inline void set_useraccount(const ::std::string& value); inline void set_useraccount(const char* value); inline void set_useraccount(const char* value, size_t size); inline ::std::string* mutable_useraccount(); inline ::std::string* release_useraccount(); inline void set_allocated_useraccount(::std::string* useraccount); // @@protoc_insertion_point(class_scope:ddz.proto.LoginMessage) private: inline void set_has_useraccount(); inline void clear_has_useraccount(); ::std::string* useraccount_; mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_hello_2eproto_impl(); #else friend void protobuf_AddDesc_hello_2eproto(); #endif friend void protobuf_AssignDesc_hello_2eproto(); friend void protobuf_ShutdownFile_hello_2eproto(); void InitAsDefaultInstance(); static LoginMessage* default_instance_; }; // =================================================================== // =================================================================== // LoginMessage // optional string userAccount = 1; inline bool LoginMessage::has_useraccount() const { return (_has_bits_[0] & 0x00000001u) != 0; } inline void LoginMessage::set_has_useraccount() { _has_bits_[0] |= 0x00000001u; } inline void LoginMessage::clear_has_useraccount() { _has_bits_[0] &= ~0x00000001u; } inline void LoginMessage::clear_useraccount() { if (useraccount_ != &::google::protobuf::internal::kEmptyString) { useraccount_->clear(); } clear_has_useraccount(); } inline const ::std::string& LoginMessage::useraccount() const { return *useraccount_; } inline void LoginMessage::set_useraccount(const ::std::string& value) { set_has_useraccount(); if (useraccount_ == &::google::protobuf::internal::kEmptyString) { useraccount_ = new ::std::string; } useraccount_->assign(value); } inline void LoginMessage::set_useraccount(const char* value) { set_has_useraccount(); if (useraccount_ == &::google::protobuf::internal::kEmptyString) { useraccount_ = new ::std::string; } useraccount_->assign(value); } inline void LoginMessage::set_useraccount(const char* value, size_t size) { set_has_useraccount(); if (useraccount_ == &::google::protobuf::internal::kEmptyString) { useraccount_ = new ::std::string; } useraccount_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* LoginMessage::mutable_useraccount() { set_has_useraccount(); if (useraccount_ == &::google::protobuf::internal::kEmptyString) { useraccount_ = new ::std::string; } return useraccount_; } inline ::std::string* LoginMessage::release_useraccount() { clear_has_useraccount(); if (useraccount_ == &::google::protobuf::internal::kEmptyString) { return NULL; } else { ::std::string* temp = useraccount_; useraccount_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); return temp; } } inline void LoginMessage::set_allocated_useraccount(::std::string* useraccount) { if (useraccount_ != &::google::protobuf::internal::kEmptyString) { delete useraccount_; } if (useraccount) { set_has_useraccount(); useraccount_ = useraccount; } else { clear_has_useraccount(); useraccount_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); } } // @@protoc_insertion_point(namespace_scope) } // namespace proto } // namespace ddz // @@protoc_insertion_point(global_scope) #endif // PROTOBUF_hello_2eproto__INCLUDED [/code]

List<Object> 根据包名+类名 转换成相应的List<Bean>

List<Object> 通过序列化将List<Bean>写入到二进制文件中,另一个程序需要根据二进制文件和包名+类名将文件中的数据读取出来。objectInputStream = new ObjectInputStream(freader); List<Object> data_list = (List<Object>)objectInputStream.readObject(); 怎么将 List<Object> 转换成相应的List<Bean>啊?读取的时候就报类未找到。请大神给解决一下啊,困扰一天了

redis存值的时候为什么要把key键变成字节数组存入啊?

刚刚了解redis就把他用到项目里了 看了别人的java示列里面都是把key键value值以字节数组的方式存入redis当中 redis操作数据都是以二进制的方式操作的 我们以这种方式存放想不到有什么好处 求解!!!!

protobuf转json后byteString格式的数据如何解析

最近利用com.googlecode.protobuf.format.JsonFormat的printToString()方法将protobuf的类转为json形式,但是原protobuf类有byteString字段如果手动转可以用toString("UTF-8")转为汉字,但是现在要求中间不作处理直接处理转化后的数据,但是转化后的数据byteString字段就转化成“1\uffe5\uff8f\uffb7\uffe4\uffb8\uffbb\uffe5\uff8f\uff9835kV\uffe8\uffbf\uff9e\uffe6\uff8e\uffa5\uffe6\uffaf\uff8d\uffe7\uffba\uffbf"的形式,使用了Unicode转码发现转码后乱码,求解这种字段如何转成中文

Android 序列化Intent对象到本地异常问题

``` // 序列化PendingIntent对象,以时间作为文件名 String fileName = String.valueOf(ent.date); PendingIntent intent = noti.contentIntent; L.e("recordNotification", "保存文件名:" + fileName); L.e("recordNotification", "PendingIntent:" + intent); ParcelableFileUtil.writeParcelable(mContext, fileName, intent); L.e("recordNotification", "保存通知并刷新界面"); Runnable runnable = new Runnable() { @Override public void run() { NotificationWrapper.getInstance().addNotificationList(ent); NotificationWrapper.getInstance().refreshNotification(); } }; handler.post(runnable); // cancelNotification(packageName, sbn.getTag(), sbn.getId()); ``` 我这是从通知栏里获取到一个通知的Intent,然后我想把它序列化保存到本地,在方法writeParcelable中出现报错。但搞不懂不知为什么出错。 writeParcelable方法如下,执行到byte[] data = parcel.marshall();返回二进制字节这里就出下面那个错了。 ``` /** * 存储单个Parcelable对象 * * @param context * @param fileName * @param object * @return boolean */ public static boolean writeParcelable(Context context, String fileName, Parcelable object) { if (fileName == null || object == null) { return false; } boolean success = false; FileOutputStream outPutStream = null; try { outPutStream = context.openFileOutput(fileName, Context.MODE_PRIVATE); Parcel parcel = Parcel.obtain(); parcel.writeParcelable(object, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); byte[] data = parcel.marshall(); outPutStream.write(data); success = true; } catch (FileNotFoundException e) { e.printStackTrace(); success = false; } catch (IOException e) { e.printStackTrace(); success = false; } finally { if (outPutStream != null) { try { outPutStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return success; } ``` 错误日志截图: ![图片说明](https://img-ask.csdn.net/upload/201608/26/1472181012_258470.jpg) 错误日志代码: ``` 08-26 03:07:38.023: E/onNotificationPosted(11563): packageName:com.example.notifications 08-26 03:07:38.043: E/recordNotification(11563): 系统通知View 08-26 03:07:38.113: E/Util(11563): saveBitmap:/storage/emulated/0/CleanMaster/notification_cache/IMG_20160826030738 08-26 03:07:38.113: E/recordNotification(11563): 保存文件名:1472180858021 08-26 03:07:38.113: E/recordNotification(11563): PendingIntent:PendingIntent{4238f680: android.os.BinderProxy@42355f30} 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): Error running onNotificationPosted 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): java.lang.RuntimeException: Tried to marshall a Parcel that contained Binder objects. 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at android.os.Parcel.nativeMarshall(Native Method) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at android.os.Parcel.marshall(Parcel.java:420) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at com.qiulong.notificationintercepttest.util.ParcelableFileUtil.writeParcelable(ParcelableFileUtil.java:36) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at com.qiulong.notificationintercepttest.service.NotificationListener.getNotificationInfo(NotificationListener.java:125) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at com.qiulong.notificationintercepttest.service.NotificationListener.onNotificationPosted(NotificationListener.java:58) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at android.service.notification.NotificationListenerService$INotificationListenerWrapper.onNotificationPosted(NotificationListenerService.java:168) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at android.service.notification.INotificationListener$Stub.onTransact(INotificationListener.java:56) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at android.os.Binder.execTransact(Binder.java:404) 08-26 03:07:38.113: W/NotificationListenerService[NotificationListener](11563): at dalvik.system.NativeStart.run(Native Method) ```

C++用哈弗曼编码实现压缩,编码文件比原文件大是怎么回事,怎么能实现压缩,代码如下,求修改

``` #include<iostream> #include<fstream> #include<string> using namespace std; struct HuffmanNode //树结点类定义 { int weight; //权值 int parent; //双亲 int lchild,rchild; //左右孩子 }; class HuffmanTree //哈夫曼树类定义 { private: struct HuffmanNode *Node; //哈夫曼树中结点的存储结构 char *Info; //用来保存各字符信息的字符数组 int LeafNum; //树中的叶子结点总数 public: HuffmanTree(); //构造函数 ~HuffmanTree(); //析构函数 void Initialization(int WeightNum); //初始化函数 void Encoder(); //编码函数,生成哈夫曼编码 void Decoder(); //译码函数,对二进制串进行译码 void Print(); //输出编码 void TreePrinting(); //输出哈夫曼树 }; HuffmanTree::HuffmanTree() //初始化空树 { Node=NULL; //将树结点初始化为空 Info=NULL; //将字符数组初始化为空 LeafNum=0; //将叶子数初始化为0 } HuffmanTree::~HuffmanTree() //析构函数 { delete[] Node; //释放结点空间 delete[] Info; //释放字符存储空间 } //初始化函数 void HuffmanTree::Initialization(int WeightNum) { int i,j,pos1,pos2,max1,max2; Node=new HuffmanNode[2*WeightNum-1]; //为哈夫曼树所需的结点申请空间 Info=new char[2*WeightNum-1]; for(i=0;i<WeightNum;i++) //先构造weightnum个点 { cout<<"请输入第"<<i+1<<"个字符值"; cin>>Info[i]; cout<<"请输入该字符的权值或频度"; cin>>Node[i].weight; //输入权值 Node[i].parent=-1; //为根结点 Node[i].lchild=-1; //无左孩子 Node[i].rchild=-1; //无右孩子 } //这里构造出weightnum个带权结点 for(i=WeightNum;i<2*WeightNum-1;i++) { pos1=-1; pos2=-1; //分别用来存放当前最小值和次小值的所在单元编号 max1=32767; //32767为整型数的最大值 max2=32767; for(j=0;j<i;j++) if(Node[j].parent==-1) if(Node[j].weight<max1) { max2=max1; //原最小值变为次小值 max1=Node[j].weight; //存放最小值 pos2=pos1; //修改次小值所在单元编号 pos1=j; //修改最小值所在单元编号 } else if(Node[j].weight<max2) { max2=Node[j].weight; //存放次小值 pos2=j; //修改次小值所在的单元编号 } Node[pos1].parent=i; //修改父亲位置 Node[pos2].parent=i; Node[i].lchild=pos1; //修改儿子位置 Node[i].rchild=pos2; Node[i].parent=-1; //表示新结点应该是根结点 Node[i].weight=Node[pos1].weight+Node[pos2].weight; } LeafNum=WeightNum; char ch; cout<<"是否要替换原来文件(y/n):"; cin>>ch; if(ch=='y'||ch=='Y') { ofstream fop; //以二进制方式打开hfmTree.dat文件,并当重新运行时覆盖原文件 fop.open("hfmTree.dat",ios::out|ios::binary|ios::trunc); if(fop.fail()) //文件打开失败 cout<<"文件打开失败!\n"; fop.write((char*)&WeightNum,sizeof(WeightNum)); //写入WeightNum for(i=0;i<WeightNum;i++) //把各字符信息写入文件 { fop.write((char*)&Info[i],sizeof(Info[i])); flush(cout); } for(i=0;i<2*WeightNum-1;i++) //把各节点内容写入文件 { fop.write((char*)&Node[i],sizeof(Node[i])); flush(cout); } fop.close(); //关闭文件 } cout<<"哈夫曼树已构造完成。\n"; } //编码函数 void HuffmanTree::Encoder() { if(Node==NULL) { ifstream fip; fip.open("hfmTree.dat",ios::binary|ios::in); //以二进制方式打开hfmTree.dat文件 if(fip.fail()) //文件打开失败 { cout<<"文件打开失败!\n"; return; //结束本函数 } fip.read((char*)&LeafNum,sizeof(LeafNum)); //读取叶子数 Info=new char[LeafNum]; Node=new HuffmanNode[2*LeafNum-1]; for(int i=0;i<LeafNum;i++) //读取字符信息 fip.read((char*)&Info[i],sizeof(Info[i])); for(int i=0;i<2*LeafNum-1;i++) //读取结点信息 fip.read((char*)&Node[i],sizeof(Node[i])); } char *Tree; //用于存储需编码内容 int i=0,num; char Choose; cout<<"从文件中读取内容的请选择1,需要重新输入的请选择2:"; cin>>Choose; if(Choose=='1') //读取文件ToBeTran.txt { ifstream fip1("ToBeTran.txt"); if(fip1.fail()) //文件不存在 { cout<<"文件打开失败!\n"; return; //结束本函数 } char ch; int k=0; while(fip1.get(ch)) { k++; } fip1.close(); Tree=new char[k+1]; ifstream fip2("ToBeTran.txt"); k=0; while(fip2.get(ch)) { Tree[k]=ch; //读取文件内容,并存到Tree中 k++; } fip2.close(); Tree[k]='\0'; //结束标志 cout<<"需编码内容为:"<<Tree<<endl; } //if(Choose=='2') else { string tree; cin.ignore(); cout<<"请输入需要编码的内容(可输入任意长,结束时请按2下回车):\n"; getline(cin,tree,'\n'); //输入任意长字符串, while(tree[i]!='\0') i++; num=i; //计算tree长度 i=0; Tree=new char[num+1]; while(tree[i]!='\0') //将tree中的字符转存到Tree中 { Tree[i]=tree[i]; i++; } Tree[i]='\0'; //结束标志符 } ofstream fop("CodeFile.dat",ios::trunc); i=0; int k=0; char *code; code=new char[LeafNum]; //为所产生编码分配容量为LeafNum的存储空间 while(Tree[k]!='\0') //对每一个字符编码 { int j,start=0; for(i=0;i<LeafNum;i++) if(Info[i]==Tree[k]) break; j=i; while(Node[j].parent!=-1) //结点j非树根 { j=Node[j].parent; //求结点j的双亲结点 if(Node[j].lchild==i) //是左子树,则生成代码0 code[start++]='0'; else code[start++]='1'; //是右子树,则生成代码1 i=j; } code[start]='\0'; //置串结束符 for(i=0;i<start/2;i++) //对二进制序列进行逆置 { j=code[i]; code[i]=code[start-i-1]; code[start-i-1]=j; } i=0; while(code[i]!='\0') //存储代码 { fop<<code[i]; i++; } k++; } fop.close(); cout<<"编码完成!且存到文件CodeFile.dat中!\n\n"; } //解码函数 void HuffmanTree::Decoder() { int i=0,k=0; int j=LeafNum*2-1-1; char* BitStr; ifstream fip1("CodeFile.dat"); //利用已建好的哈夫曼树将文件CodeFile中的代码进行译码 if(fip1.fail()) { cout<< "请先编码!\n"; return; } cout<<"经译码,原内容为:"; char ch; while(fip1.get(ch)) { k++; } fip1.close(); BitStr=new char[k+1]; ifstream fip2("CodeFile.dat"); k=0; while(fip2.get(ch)) { BitStr[k]=ch; //读取文件内容 k++; } fip2.close(); BitStr[k]='\0'; //结束标志符 if(Node==NULL) //还未建哈夫曼树 { cout<<"请先编码!\n"; return; } ofstream fop("TextFile.dat"); //将字符形式的编码文件写入文件CodePrin中 while(BitStr[i]!='\0') { if(BitStr[i]=='0') j=Node[j].lchild; //往左走 else j=Node[j].rchild; //往右走 if(Node[j].rchild==-1) //到达叶子结点 { cout<<Info[j]; //输出叶子结点对应的字符 j=LeafNum*2-1-1; fop<<Info[j]; //存入文件 } i++; } fop.close(); cout<<"\n译码成功且已存到文件TextFile.dat中!\n\n"; } //输出编码函数 void HuffmanTree::Print() { char ch; int i=1; ifstream fip("CodeFile.dat"); ofstream fop("CodePrin.dat"); if(fip.fail()) { cout<<"没有文件,请先编码!\n"; return; } while(fip.get(ch)) { cout<<ch; //读取文件内容 fop<<ch; //存到文件中 if(i==50) { cout<<endl; i=0; } i++; } cout<<endl; fip.close(); //关闭CodeFile.dat文件 fop.close(); //关闭CodePrin.dat文件 } //输出哈夫曼树 void HuffmanTree::TreePrinting() { if(Node==NULL) { cout<<"请先建立哈夫曼树!\n"; return; } ofstream fop("TreePrint.dat"); cout<<"结点位置(权值) "<<"编码 "<<"左孩子 "<<"编码"<<"右孩子('^'表示叶子)\n"; fop<<"结点位置(权值) "<<"编码 "<<"左孩子 "<<"编码"<<"右孩子('^'表示叶子)\n"; int i; for(i=(2*LeafNum-2);i>LeafNum-1;i--) { cout<<i<<"("<<Node[i].weight<<")"<<"--1--" <<Node[i].lchild<<"("<<Node[Node[i].lchild].weight<<")"<<"--0--" <<Node[i].rchild<<"("<<Node[Node[i].rchild].weight<<")"<<endl; fop<<i<<"("<<Node[i].weight<<")"<<"--1--" <<Node[i].lchild<<"("<<Node[Node[i].lchild].weight<<")"<<"--0--" <<Node[i].rchild<<"("<<Node[Node[i].rchild].weight<<")"<<endl; } for(;i>=0;i--) { cout<<i<<":"<<Node[i].weight<<"("<<Info[i]<<")---^\n"; fop<<i<<":"<<Node[i].weight<<"("<<Info[i]<<")---^\n"; } } int main() { cout<<"~~~~~~~~~~~~~welcome to Huffman encodrding&decoding system ~~~~~~~~~~~~~~~~~~~~\n\n"; cout<<"You can choose 1--6 options:\n"; cout<<"(1)初始化 \n"; cout<<"(2) 编码\n"; cout<<"(3) 译码\n"; cout<<"(4) 输出编码\n"; cout<<"(5) 输出哈弗曼树\n"; cout<<"(6) Byebye~!\n\n"; HuffmanTree HT; int weight; int choice; int OK=0; while ( !OK ) { cout<<"Please input your option (1--6):"; cin>> choice; switch( choice) { case 1: cout<<"Please input your code lenth"<<endl; cin>>weight; HT.Initialization(weight); break; case 2: HT.Encoder(); break; case 3: HT.Decoder(); break; case 4: HT.Print();break; case 5: HT.TreePrinting();break; case 6: cout<<"\n***********Thanks for Using!***********\n"; OK=1; break; return 0; } cout<<"(1)初始化\n"; cout<<"(2)编码\n"; cout<<"(3)译码\n"; cout<<"(4)打印哈弗曼编码\n"; cout<<"(5)打印哈弗曼树\n"; cout<<"(6) Byebye~!\n\n"; } return 0; } ```

需要一个服务器实现的方向,迷茫?

我用java swing做了一个gui 的小应用,简单的登录gui, username, password这些。 然后我现在遇到了问题,拜请各位帮忙! 1 数据传输我需要注意啥?是不是先得把username和password变成username.getbytes()二进制,然后再序列化,然后再传输?一般实际中,大家是怎么做的?那比如password,需不需要再传输中加密还是! 2 服务器端,我怎么实现运行一个soap,或者rmi,或者restful的web service啊? 我现在有一台ubuntu server, 上面有tomcat 在8080 和 http apache 在80,我要怎么做啊? 我的想法有以下三个,也不知道对不对。 2.1 用php写一个服务器端api,然后用http把客户端数据传给apache,处理。那要是我想要用java写,跑在apache服务器端,怎么做? 2.2 用java写服务器端api,跑在tomcat,客户端直接和8080口通讯,那这个java文件在服务器端怎么运行? 2.3 请求给apache,apache再把请求forwarding给tomcat,tomcat处理后返还给apache,apache再给客户,这个可以吗?要查找些什么知识来实现? 3 是不是tomcat只能处理sevlet和jsp,不能处理java的restful,我是不是需要别的服务器?例如glassfish啥的?

一道关于数列的题目,Pascal,求大神帮忙

一道关于数列的题目,我用了Pascal语言,但运行结果总是一个定值,毫无变化,我怀疑主程序的循环有问题,但又找不出来,求大神帮忙找错,谢谢了。 **数列** (sequence.pas/c/cpp) 【问题描述】 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。 【输入文件】 输入文件sequence.in 只有1行,为2个正整数,用一个空格隔开: k N (k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。 【输出文件】 输出文件sequence.out 为计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*109)。(整数前不要有空格和其他符号)。 【输入样例】 3 100 【输出样例】 981 var i,i2,g,sum,n:longint; k:shortint; bit:array[1..100]of shortint;//记录数的二次方的每个数位 function fang(a,b:longint):longint; //求a的b次方 var a2:longint; begin a2:=a; for i:=1 to b do a:=a*a2; exit(a); end; procedure er(c:longint); //求c的二进制(倒序的) begin g:=0;//record times while c<>0 do begin inc(g); bit[g]:=c mod 2; c:=c div 2; end; end; begin read(k,n); er(n); sum:=1; i2:=0; for i:=g downto 1 do//倒序处理bit begin inc(i2); if bit[i]=1 then begin if i2=1 then continue;//已将sum赋值1,所以无需计算0次方了 sum:=fang(k,i2)+sum; end; end; write(sum); end. ``` ```

csp 2019年3月竞赛第三题 有什么高效的算法?

萌新算法水平很弱,这题只得了30分(超时),请大佬们帮优化一下代码 ,或者指点萌新一个高效的算法。谢谢 ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner inputer = new Scanner(System.in); //读数据 int diskCount = inputer.nextInt();//有的硬盘总数 int stripSize = inputer.nextInt();//一条中有几块 int avaliableDiskCount = inputer.nextInt();//可用的硬盘数量 //读取因盘中的信息 String[] datas = new String[avaliableDiskCount]; inputer.nextLine();//提前做处理 for( int x = 0 ; x < avaliableDiskCount ; x++) datas[x] = inputer.nextLine();//读入硬盘的数据 int outputCount = inputer.nextInt(); //输出的数量 int[] outputNum = new int[outputCount]; for(int x = 0 ; x < outputCount ; x ++)outputNum[x] = inputer.nextInt();//输出的序号 /* 输入信息检测 ok for(int x = 0 ; x < avaliableDiskCount ; x++) System.out.println(datas[x]);//硬盘信息 for(int x = 0 ; x < outputCount ; x ++)System.out.println(outputNum[x]);//输出的个数 */ //创建硬盘阵列 int pieceCountInOneDisk = (datas[0].length() - (datas[0].indexOf(" ") + 1) ) / 8 ; //一个硬盘中的最大的分条数 String[][] diskDatas = new String[pieceCountInOneDisk][diskCount];//阵列数据 int cutIndex ;//截取硬盘号用的暂时数据计数 String diskNumInString = "";//用暂存硬盘编号 int nowDiskNum ; // 当前的硬盘编号 String everyPieceData = "";//每块中的8位数据 int nowPieceNum ; //填充硬盘数据是用 的计数器 boolean[] diskSign = new boolean[diskCount];//硬盘是否可用记号 for(String s : datas) { //截取硬盘号 cutIndex = 0 ; diskNumInString = ""; while(s.charAt(cutIndex) != ' ') { diskNumInString += s.charAt(cutIndex);//拼接数字 cutIndex ++ ;//结束后是空格所在位置 } nowDiskNum = Integer.parseInt(diskNumInString);//把硬盘编号转换成数值 diskSign[nowDiskNum] = true ;//该硬盘即可用 cutIndex ++ ; //移到数据的地方 nowPieceNum = 0 ; //向该盘中填充数据 while(true) {//结束条件内部控制 everyPieceData = ""; for(int x = 0 ; x < 8 ; x ++ , cutIndex++)everyPieceData += s.charAt(cutIndex);//截取8位 diskDatas[nowPieceNum][nowDiskNum] = everyPieceData ;//填入对应的盘和对应的块 if(cutIndex == s.length())break ; nowPieceNum ++ ;//结束时候是有效的最大块 } }//for(s) end /* *测试硬盘阵列的建立 for(int x = 0 ; x < pieceCountInOneDisk ; x ++) { for(int y = 0 ; y < diskCount ; y ++) { if(diskSign[y])System.out.print(diskDatas[x][y] + " "); else System.out.print("- "); } System.out.println(); } */ //修复与输出 int[] nowLocation ;//转换出来的标准位置0:硬盘中的第几块、1:哪个硬盘 String[] otherData ; for(int x = 0 ; x < outputCount ; x ++) {//遍历输出序列 nowLocation = location(outputNum[x] , stripSize , diskCount);//定位 if(diskSign[nowLocation[1]] == true) {//当前的硬盘存在, //判断是否超越界限 if(nowLocation[0] >= pieceCountInOneDisk)System.out.println("-");//输出错误 else System.out.println(diskDatas[nowLocation[0]][nowLocation[1]]);//输出 }else if(diskCount - avaliableDiskCount >= 2) { //不可修复 System.out.println("-"); }else {//可修复进行修复 otherData = new String[diskCount-1];//其他盘中的数据 for(int y = 0 , y2 = 0 ; y < diskCount ; y ++) { if(y != nowLocation[1]) {//取得其他恢复用数据 otherData[y2] = diskDatas[nowLocation[0]][y]; y2++; } }//for(y) end //进行恢复输出 System.out.println(fixUp(otherData)); } } } public static int[] location(int thePieceNum , int stripSize , int diskCount) { int stripLineNum = thePieceNum /( (diskCount - 1) * stripSize);//在第几排条 int numInThisStriopLine =( thePieceNum %( (diskCount - 1) * stripSize)) / stripSize ;//在当前排条的第几条 int thisStripLineCickNum = (diskCount - 1) - (stripLineNum % diskCount) ; //当前排条的校验位 int nowDiskNum = thisStripLineCickNum + 1 == diskCount ? 0 : thisStripLineCickNum + 1 ; //初始化该排第一个数据位 for(int x = 0 ; x < numInThisStriopLine ; x++)nowDiskNum = nowDiskNum + 1 == diskCount ? 0 : nowDiskNum + 1 ;//定位到硬盘号 int thisStripNumInDisk = (stripLineNum * stripSize) + (thePieceNum % stripSize) ;//定位到当前硬盘第几块 int[] solve = {thisStripNumInDisk , nowDiskNum}; return solve ; } public static String fixUp(String[] otherData) { String[][] stemp1 = new String[4][otherData.length];//转成分4位的二进制串 int index ; //截取起始位置 String nowTempH ;//截取的16进制串 String nowTempB ;//街截取的2进制串 for(int x = 0 ; x < 4 ; x++) { for(int y = 0 ; y < otherData.length ; y ++ ) { nowTempH = ""; nowTempB = ""; index = x * 2 ;//延这个位置截取2个 nowTempH += otherData[y].charAt(index);//第一个 index ++ ; nowTempH += otherData[y].charAt(index);//第二个 //转成二进制串 nowTempB = Integer.toBinaryString(Integer.parseInt(nowTempH , 16)); //补齐8位 for(int z = nowTempB.length() ; z < 8 ; z++)nowTempB = "0" + nowTempB ; stemp1[x][y] = nowTempB ;//记录 } }//for(x) end /* * 测试 * System.out.println("测试stemp1:"); for(int y = 0 ; y < otherData.length ; y ++ ) { for(int x = 0 ; x < 4 ; x ++) { System.out.print(stemp1[x][y] + " "); } System.out.print(" "); } System.out.println(); */ String[] solveInB = new String[4]; String solve ;//每8位的异或结果 int oneCount ; // 1 的个数 for(int x = 0 ; x < 4 ; x ++) { solve = "" ; for(int z = 0 ; z < 8 ; z ++) { oneCount = 0 ; for(int y = 0 ; y < otherData.length ; y ++){ if(stemp1[x][y].charAt(z)=='1')oneCount ++ ; } solve += oneCount % 2 == 1 ? "1" : "0"; } solveInB[x] = solve ; } /* * 测试 for(int x = 0 ; x < 4 ; x ++)System.out.print(solveInB[x] + " "); System.out.println(); */ //最后拼串 String end = ""; int endTemp ; //转成10进制 String endTempString ; for(int x = 0 ; x < 4 ; x ++) { endTemp = Integer.parseInt(solveInB[x] , 2); endTempString = Integer.toHexString(endTemp); for(int y = endTempString.length() ; y < 2 ; y++)endTempString = "0" + endTempString ; end += endTempString.toUpperCase(); } return end ; } } ```

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue + Spring Boot 项目实战(十九):Web 项目优化解决方案

快来一起探索如何打脸我们的破项目,兄弟姐妹们把害怕打在公屏上!

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

一个HashMap跟面试官扯了半个小时

一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。 开场 面试官: 你先自我介绍一下吧! 安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

工作两年简历写成这样,谁要你呀!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会… ...

正点原子:STM32F103(战舰)、STM32F407(探索者)、STM32F103(MINI)原理图和PCB

正点原子:STM32F103(战舰)、STM32F407(探索者)、STM32F103(MINI)原理图和PCB

讲真,这两款idea插件,能治愈你英语不好的病

时不时就有小伙伴问我,“二哥,能推荐一款 IDE 吗?”你看这话问的,现在搞 Java 的不都在用 Intellij IDEA 吗,还用得着推荐(我已经和 Eclipse 分手了)。然后小伙伴又说,“二哥,IDEA 支持中文吗?我英语不太好。”你看这话问的,搞编程的,英语不好是硬伤啊! 不过,随着 IDEA 最新版(版本号是 2020.1)的发布,英语不好的病可以彻底治愈了。为什么这么说呢?因为 ...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

大专学历就职会不会有瓶颈?

二哥,看了你的那篇外包程序员的文章,想问问您,大专学历以后就职会不会有瓶颈,升职难什么的? 以上是读者阿莫私信我的一个问题,我觉得很有必要认真地谈一谈。单从这个问句上,我现在就可以给出一个无比肯定的回答:“谁要说没有瓶颈,那绝对是骗人的。” 先说一点。这句提问很简短,但有一个瑕疵,眼睛雪亮的读者一眼就能看得出来——先用了“你”,再用了“您”。不是我在故意鸡蛋里挑骨头,我没那么闲,用“您”肯定...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐